home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 2001-08-10 | 12.5 KB | 477 lines |
- Set Buffer 100
- Screen Open 0,640,256,2,$8000
- Curs Off : Flash Off : Paper 0 : Pen 1 : Cls
- Centre "CreateGfxIndex V1.3 (06-Dec-97) by Chris Hodges"
- Print : Print
- Gosub ACQUIREPREFS
- Print "Counting files:";
- Extension_8_063A SOURCE$
- MXFIL=0
- Do
- F$= Extension_8_064C
- Exit If F$=""
- Inc MXFIL
- Loop
- Print MXFIL;" files found."
- Print
- Dim FI$(MXFIL)
- Gosub LOOKFILES
- Gosub LAYOUT
- CMAPX=8
- INNUM=1
- COUFI=(INNUM-1)*14*7
- Repeat
- F$=Mid$(FI$(COUFI),32)
- Exit If F$=""
- Gosub CREATEONEINDEX
- ' Gosub IMAGEFILTER
- Home : Cline : Print "Saving PPM Index..."
- FF$=BASENAME$+ Extension_8_0EB8(INNUM,2)
- Extension_8_0472 FF$+".ppm",9
- If CMAPX
- If CMAPX=24
- Home : Cline : Print "Creating 24 Bit IFF Index..."
- Exec COMPATH$+"ppmtoilbm -aga "+FF$+".ppm >"+FF$+".24b"
- Else
- Home : Cline : Print "Creating CMAPx Index..."
- Exec COMPATH$+"ppm2aga "+FF$+".ppm "+FF$+".iff -E -CMAP"+ Extension_8_0EC8(CMAPX,1)
- End If
- Else
- Home : Cline : Print "Creating HAM8 Index..."
- Exec COMPATH$+"ppm2aga "+FF$+".ppm "+FF$+".iff"
- End If
- Inc INNUM
- Until F$=""
- Trap Kill "T:Temp.ppm"
- Trap Kill "T:Temp2.ppm"
- Cls : Print "Processing finished." : Wait Key
- Screen Close 0
- End
- ACQUIREPREFS:
- THBX=144 : THBY=48 : THBSX=2 : THBSY=4
- THBX=180 : THBY=68 : THBSX=2 : THBSY=2
- ' THBX=200 : THBY=66 : THBSX=4 : THBSY=4
- ' THBX=96 : THBY=128 : THBSX=0 : THBSY=0
- SOURCE$=Fsel$("","PleaseDontChange","Select image directory you","want to create index pictures of")
- If SOURCE$="" Then Stop
- SOURCE$= Extension_8_03E0(SOURCE$)
- Print "Source path: ";SOURCE$
- 'SOURCE$="DH0:Storage/Bootlogos"
- BASENAME$=Fsel$("","!Index","Enter name of target ppm file","")
- If BASENAME$="" Then Stop
- Print "Basename: ";BASENAME$
- 'BASENAME$="Work:!Index"
- COMPATH$="Work:Visual/Tools/Commands/"
- If Exist("Commands")
- COMPATH$="Commands/"
- End If
- Print "Path for cli-commands: ";COMPATH$
- Print
- ' Put Key "1428"
- Put Key "1274"
- Input "Enter maximum width: ";MXSCX
- Put Key "980"
- Input "Enter maximum height: ";MXSCY
- Print "HAM, 32 colours or greyscale preview (H/C/G): ";
- Repeat : Multi Wait : K$=Upper$(Inkey$) : Until K$="H" or K$="C" or K$="G"
- Print K$
- If K$="C" Then HAM=0
- If K$="H" Then HAM=1
- If K$="G" Then HAM=2
- Print "Add filename? (Y/N) ";
- Repeat : Multi Wait : K$=Upper$(Inkey$) : Until K$="Y" or K$="N"
- Print K$
- If K$="Y" Then FILNAM=1 Else FILNAM=0
- Print "Add image size information? (Y/N) ";
- Repeat : Multi Wait : K$=Upper$(Inkey$) : Until K$="Y" or K$="N"
- Print K$
- If K$="Y" Then IMSIZE=1 Else IMSIZE=0
- Print "Deep pre-examination of files in directory? (Y/N) ";
- Repeat : Multi Wait : K$=Upper$(Inkey$) : Until K$="Y" or K$="N"
- Print K$
- If K$="Y" Then DEEP=1 Else DEEP=0
- Curs Off
- Print
- Return
- LOOKFILES:
- If DEEP
- Print "Checking files for valid pictures..."
- Print
- End If
- Extension_8_063A SOURCE$
- NUMFI=0
- Reserve As Work 10,16
- TST=1
- Do
- F$= Extension_8_064C
- Exit If F$=""
- If Extension_8_0688 <0
- DIT=0
- If DEEP
- Open In 1, Extension_8_03EC(SOURCE$)+F$
- Extension_8_17A6 1 To Start(10),16
- Close 1
- If Leek(Start(10)+8)= Extension_8_0998("ILBM")
- DIT=1
- Else
- If Leek(Start(10)+6)= Extension_8_0998("JFIF")
- DIT=1
- Else
- If Leek(Start(10))= Extension_8_0998("GIF8")
- DIT=1
- Else
- Trap Kill "T:Temp2.ppm"
- Exec COMPATH$+'xtoilbm "'+ Extension_8_03EC(SOURCE$)+F$+'" T:Temp2.ppm'
- PIC$="T:Temp2.ppm"
- If Exist(PIC$)
- DIT=1
- End If
- End If
- End If
- End If
- Else
- DIT=1
- End If
- If DIT
- FI$(NUMFI)=Upper$(F$)+Space$(31-Len(F$))+F$
- Inc NUMFI
- End If
- End If
- If DEEP
- Print "Valid:";NUMFI;"...(";TST;" tested)"
- Cup
- End If
- Inc TST
- Loop
- XXX=Free
- Print "Number of files to process:";NUMFI
- For A=NUMFI To MXFIL
- FI$(A)=Chr$(255)
- Next
- Sort FI$(0)
- Print : Print
- Print "Press any key to continue..."
- Wait Key
- Return
- LAYOUT:
- If HAM=0 Then Screen Open 0,320,256,32,0
- If HAM=1 Then Screen Open 0,320,256,4096,0
- If HAM=2 Then Screen Open 0,320,256,16,0
- Curs Off : Flash Off : Paper 0 : Pen 1 : Cls
- Extension_8_05B0 "small",6
- If HAM
- For A=0 To 15
- Colour A,A*$111
- ' Ink A : Bar A*10,20 To A*10+19,29
- Next
- Else
- For A=0 To 31
- Colour A, Extension_8_0A0E((A/8)*5,((A/2) mod 4)*5,(A and 1)*15)
- Next
- End If
- Pen Extension_8_1504($FFF)
- COUFI=0
- Repeat
- Multi Wait : View
- Gosub RENDERLAYOUT
- Home : Cline : Print "Width:";THBX;" Height:";THBY;" SpcX:";THBSX;" SpcY:";THBSY
- Print "Use Cursor to change or Space."
- Repeat : Multi Wait : K$=Inkey$ : Until K$<>""
- If Key Shift=0
- If K$=Cleft$ : Dec THBX : End If
- If K$=Cright$ : Inc THBX : End If
- If K$=Cup$ : Dec THBY : End If
- If K$=Cdown$ : Inc THBY : End If
- Else
- If K$=Cleft$ : Dec THBSX : End If
- If K$=Cright$ : Inc THBSX : End If
- If K$=Cup$ : Dec THBSY : End If
- If K$=Cdown$ : Inc THBSY : End If
- End If
- Until K$=" "
- Home : Cline : Print : Cline
- Return
- CREATEONEINDEX:
- Gosub RENDERLAYOUT
- Reserve As Work 9,TARX*TARY*3+Len(TAR$)
- ST=Start(9)
- Poke$ ST,TAR$
- BMP=ST+Len(TAR$)
- IX=0 : IY=0
- Do
- K$=Inkey$ : If K$=Chr$(27) Then F$="" : Exit
- F$=Mid$(FI$(COUFI),32) : Inc COUFI
- Exit If F$=""
- DIT=0
- Reserve As Work 10,16
- Open In 1, Extension_8_03EC(SOURCE$)+F$
- Extension_8_17A6 1 To Start(10),16
- Close 1
- If Leek(Start(10)+8)= Extension_8_0998("ILBM")
- DIT=1
- PIC$= Extension_8_03EC(SOURCE$)+F$
- Erase 10
- Else
- If Leek(Start(10)+6)= Extension_8_0998("JFIF")
- Erase 10
- Home : Cline : Print "Converting ";F$;" (jpeg) to ppm..."
- Trap Kill "T:Temp.ppm"
- Exec COMPATH$+'djpeg "'+ Extension_8_03EC(SOURCE$)+F$+'" T:Temp.ppm'
- If Exist("T:Temp.ppm")
- DIT=2
- End If
- Else
- If Leek(Start(10))= Extension_8_0998("GIF8")
- Erase 10
- Home : Cline : Print "Converting ";F$;" (gif) to ppm..."
- Trap Kill "T:Temp.ppm"
- Exec COMPATH$+'giftopnm "'+ Extension_8_03EC(SOURCE$)+F$+'" >T:Temp.ppm'
- If Exist("T:Temp.ppm")
- DIT=2
- End If
- Else
- Erase 10
- Home : Cline : Print "Converting ";F$;" to ilbm..."
- Trap Kill "T:Temp2.ppm"
- Exec COMPATH$+'xtoilbm "'+ Extension_8_03EC(SOURCE$)+F$+'" T:Temp2.ppm'
- PIC$="T:Temp2.ppm"
- If Exist(PIC$)
- DIT=1
- End If
- End If
- End If
- End If
- Erase 10
- If DIT
- If DIT<2
- Home : Cline : Print "Converting ";F$;" to ppm..."
- Exec COMPATH$+'ilbmtoppm "'+PIC$+'" >T:Temp.ppm'
- End If
- ' If IMSIZE
- Reserve As Work 10,32
- Open In 1,"T:Temp.ppm"
- DAT$=Input$(1,32)
- Close 1
- D$= Extension_8_16B6(DAT$,1,Chr$(10))
- OGX=Val( Extension_8_16B6(D$,0," "))
- OGY=Val( Extension_8_16B6(D$,1," "))
- ' End If
- If OGX<>THBX or OGY<>THBY
- Home : Cline : Print "Creating thumbnail of ";F$;"..."
- Exec COMPATH$+"pnmscale -width"+Str$(THBX)+" -height"+Str$(THBY)+" T:Temp.ppm >T:Temp2.ppm"
- Else
- Home : Cline : Print "Image has got right size..."
- Trap Kill "T:Temp2.ppm"
- Rename "T:Temp.ppm" To "T:Temp2.ppm"
- End If
- Gosub INSERTTHUMB
- Add IX,THBX+THBSX
- If IX>TARX-THBX : IX=0 : Add IY,THBY+THBSY : End If
- If IY>TARY-THBY : Exit : End If
- End If
- Loop
- Return
- RENDERLAYOUT:
- Cls
- IX=0 : IY=0
- Ink Extension_8_1504($FFF),0
- Box 0,16 To MXSCX/4,MXSCY/4+16
- NUMX=MXSCX/(THBX+THBSX) : NUMY=MXSCY/(THBY+THBSY)
- TARX=NUMX*THBX+(NUMX-1)*THBSX
- TARY=NUMY*THBY+(NUMY-1)*THBSY
- For A=COUFI+1 To NUMFI
- X=IX : Y=IY
- Box X/4,Y/4+16 To(X+THBX-1)/4,(Y+THBY-1)/4+16
- T$= Extension_8_0EB8(A,3)
- LT=Text Length(T$)
- If LT>THBX : LT=THBX : End If
- X=IX+1+THBX/2
- Y=IY+THBY/2
- Text X/4-LT/2,Y/4+13+Text Base,T$
- Add IX,THBX+THBSX
- NTARY=IY+THBY
- If IX>TARX-THBX Then IX=0 : Add IY,THBY+THBSY
- Exit If IY>TARY-THBY
- Next
- TARY=NTARY
- TAR$="P6"+Chr$(10)+(Str$(TARX)-" ")+Str$(TARY)+Chr$(10)+"255"+Chr$(10)
- Return
- INSERTTHUMB:
- Extension_8_0456 "T:Temp2.ppm",10
- FFB=Start(10)
- DAT$=Peek$(FFB,32)
- D$= Extension_8_16B6(DAT$,1,Chr$(10))
- OX=Val( Extension_8_16B6(D$,0," "))
- OY=Val( Extension_8_16B6(D$,1," "))
- NUMLF=0
- Repeat
- If Peek(FFB)=10
- Inc NUMLF
- End If
- Inc FFB
- Until NUMLF=3
- X=IX : Y=IY
- Ink 0
- Bar X/4,Y/4+16 To(X+OX-1)/4,(Y+OY-1)/4+16
- Gosub IMAGECOPY
- If HAM=2 Then Gosub GREYTHUMB
- If HAM=1 Then Gosub HAMTHUMB
- If HAM=0 Then Gosub THUMBC32
- If FILNAM Then T$=((F$-".gif")-".iff")-".jpg" : X=IX : Y=IY+1 : Gosub WRITETEXT
- If IMSIZE
- T$=(Str$(OGX)+"x"+Str$(OGY))-" "
- X=IX : Y=IY+THBY-8 : Gosub WRITETEXT
- End If
- Return
- IMAGECOPY:
- AD=FFB
- If Left$(DAT$,2)="P6"
- For YY=0 To OY-1
- For XX=0 To OX-1
- TA=BMP+(X+XX)*3+(Y+YY)*TARX*3
- Poke TA,Peek(AD) : Poke TA+1,Peek(AD+1) : Poke TA+2,Peek(AD+2)
- Add AD,3
- Next
- Next
- End If
- If Left$(DAT$,2)="P5"
- For YY=0 To OY-1
- For XX=0 To OX-1
- TA=BMP+(X+XX)*3+(Y+YY)*TARX*3
- PPPP=Peek(AD) : Inc AD
- Poke TA,PPPP : Poke TA+1,PPPP : Poke TA+2,PPPP
- Next
- Next
- End If
- Return
- IMAGEFILTER:
- Home : Cline : Print "Filtering image..."
- AD=BMP
- THRES=56
- For CNT=1 To TARX*TARY
- C0=Peek(AD)
- C1=Peek(AD+1)
- C2=Peek(AD+2)
- If(C0<THRES and C1<THRES and C2<THRES)
- Poke AD,0
- Poke AD+1,0
- Poke AD+2,0
- End If
- Add AD,3
- Next
- Return
- HAMTHUMB:
- AD=FFB
- If Left$(DAT$,2)="P6"
- For YY=0 To OY-1 Step 4
- HAMA= Extension_8_16E6((X/4)-1,(Y+YY)/4+16)
- If HAMA<0 : HAMA=Colour(0) : End If
- For XX=0 To OX-1
- If(XX mod 4)=0
- HAMP= Extension_8_09FC( Extension_8_0A0E(Peek(AD)/16,Peek(AD+1)/16,Peek(AD+2)/16),HAMA)
- Extension_8_0388(X+XX)/4,(Y+YY)/4+16,HAMP
- HAMA= Extension_8_09E8(HAMP,HAMA)
- End If
- Add AD,3
- Next
- Add AD,OX*9
- Next
- End If
- If Left$(DAT$,2)="P5"
- For YY=0 To OY-1 Step 4
- HAMA= Extension_8_16E6((X/4)-1,(Y+YY)/4+16)
- If HAMA<0 : HAMA=Colour(0) : End If
- For XX=0 To OX-1
- If(XX mod 4)=0
- HAMP= Extension_8_09FC((Peek(AD)/16)*$111,HAMA)
- Extension_8_0388(X+XX)/4,(Y+YY)/4+16,HAMP
- HAMA= Extension_8_09E8(HAMP,HAMA)
- End If
- Inc AD
- Next
- Add AD,OX*3
- Next
- End If
- Return
- THUMBC32:
- AD=FFB
- If Left$(DAT$,2)="P6"
- For YY=0 To OY-1 Step 4
- For XX=0 To OX-1
- If(XX mod 4)=0
- Extension_8_0388(X+XX)/4,(Y+YY)/4+16, Extension_8_1504( Extension_8_0A0E(Peek(AD)/16,Peek(AD+1)/16,Peek(AD+2)/16))
- End If
- Add AD,3
- Next
- Add AD,OX*9
- Next
- End If
- If Left$(DAT$,2)="P5"
- For YY=0 To OY-1 Step 4
- For XX=0 To OX-1
- If(XX mod 4)=0
- Extension_8_0388(X+XX)/4,(Y+YY)/4+16, Extension_8_1504((Peek(AD)/16)*$111)
- End If
- Inc AD
- Next
- Add AD,OX*3
- Next
- End If
- Return
- GREYTHUMB:
- AD=FFB
- If Left$(DAT$,2)="P6"
- For YY=0 To OY-1 Step 4
- For XX=0 To OX-1
- If(XX mod 4)=0
- Extension_8_0388(X+XX)/4,(Y+YY)/4+16,Min((Peek(AD)+Peek(AD+1)+Peek(AD+2)+ Extension_8_11B8(24)),765)/48
- End If
- Add AD,3
- Next
- Add AD,OX*9
- Next
- End If
- If Left$(DAT$,2)="P5"
- For YY=0 To OY-1 Step 4
- For XX=0 To OX-1
- If(XX mod 4)=0
- Extension_8_0388(X+XX)/4,(Y+YY)/4+16,Min((Peek(AD)+ Extension_8_11B8(8)),255)/16
- End If
- Inc AD
- Next
- Add AD,OX*3
- Next
- End If
- Return
- WRITETEXT:
- Home : Cline
- Ink 1,0 : Text 0,Text Base,T$
- LT=Text Length(T$)
- If LT>THBX : LT=THBX : End If
- Add X,1+(THBX-LT)/2
- For YY=0 To 5
- For XX=0 To LT-1
- P= Extension_8_039E(XX,YY)
- If P
- TA=BMP+(X+XX+1)*3+(Y+YY)*TARX*3
- Poke TA,0 : Poke TA+1,0 : Poke TA+2,0
- TA=BMP+(X+XX)*3+(Y+YY+1)*TARX*3
- Poke TA,0 : Poke TA+1,0 : Poke TA+2,0
- TA=BMP+(X+XX+2)*3+(Y+YY+1)*TARX*3
- Poke TA,0 : Poke TA+1,0 : Poke TA+2,0
- TA=BMP+(X+XX+1)*3+(Y+YY+2)*TARX*3
- Poke TA,0 : Poke TA+1,0 : Poke TA+2,0
- End If
- Next
- Next
- For YY=0 To 5
- For XX=0 To LT-1
- P= Extension_8_039E(XX,YY)
- If P
- TA=BMP+(X+XX+1)*3+(Y+YY+1)*TARX*3
- Poke TA,255 : Poke TA+1,255 : Poke TA+2,255
- End If
- Next
- Next
- Home : Cline
- Return